#ifndef _LED_MANAGER_H_
#define _LED_MANAGER_H_

#include "./SYSTEM/SYS/sys.h"
#include "./BSP/LED/cot_led.h"

/* -------------------------------------------- LED引脚定义 ---------------------------------------------- */

#define LED0_GPIO_PORT                  GPIOA
#define LED0_GPIO_PIN                   GPIO_PIN_8
#define LED0_GPIO_CLK_ENABLE()          do{ __HAL_RCC_GPIOA_CLK_ENABLE(); }while(0)             /* PA口时钟使能 */

#define LED1_GPIO_PORT                  GPIOD
#define LED1_GPIO_PIN                   GPIO_PIN_2
#define LED1_GPIO_CLK_ENABLE()          do{ __HAL_RCC_GPIOD_CLK_ENABLE(); }while(0)             /* PD口时钟使能 */

/* -------------------------------------------- LED控制宏定义 -------------------------------------------- */

#define LED0(x)   do{ x ? \
                      HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0_GPIO_PIN, GPIO_PIN_SET) : \
                      HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0_GPIO_PIN, GPIO_PIN_RESET); \
                  }while(0)      /* LED0翻转 */

#define LED1(x)   do{ x ? \
                      HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_GPIO_PIN, GPIO_PIN_SET) : \
                      HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_GPIO_PIN, GPIO_PIN_RESET); \
                  }while(0)      /* LED1翻转 */

/* LED取反定义 */
#define LED0_TOGGLE()   do{ HAL_GPIO_TogglePin(LED0_GPIO_PORT, LED0_GPIO_PIN); }while(0)        /* 翻转LED0 */
#define LED1_TOGGLE()   do{ HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_GPIO_PIN); }while(0)        /* 翻转LED1 */

/* -------------------------------------------- LED ID定义 ----------------------------------------------- */
typedef enum
{
    LED_0 = 0,
    LED_1,
    
    /* 勿删除,用来统计LED的数目 */
    LED_MAX_NUM
} LedType_e;

/* -------------------------------------------- 函数声明 --------------------------------------------------- */

/* 外部接口函数*/
void FML_LED_Init(void);

#endif
